package hermes.persistencia.mapeadores;

import hermes.controle.ClasseNegocio;
import hermes.controle.Usuario;

public class MapeadorUsuario implements ClasseMapeadora{
    
    private String tabela = "usuarios";
    private String camposBancoDados[] = {"nome","login","senha","email","grupoUsuario"};
    private String identificadorObjeto = "idObjUsuario";

    public MapeadorUsuario(){

    }

    @Override
    public String sqlListar() {
        String sql = null;
        sql = "select "+identificadorObjeto+", "+nomesCamposBD()+" from "+tabela;
        return sql;
    }

    @Override
    public String sqlBuscar(ClasseMapeadora classeMapeadora, String campo, String argumento) {
        String sql = "select * from "+tabela+" where "+campo+ "="+argumento + ";";
        return sql;
    }

    @Override
    public String sqlBuscar(Integer idObjeto){
        String sql = "select "+identificadorObjeto+","+nomesCamposBD()+" from "+tabela+" where "+identificadorObjeto+ "="+idObjeto;
        return sql;
    }

	@Override
    public String sqlInserir(Object o){
        Usuario user=(Usuario)o;
        String sql = "insert into "+tabela+" ("+nomesCamposBD()+") values ("+user.getNome()+","+user.getLogin()+","+user.getSenha()+","+user.getEmail()+","+user.getGrupoUsuario()+");";
        return sql;
    }

    @Override
    public String sqlExcluir(Integer idObjeto){
        String sql = "delete from "+tabela+" where "+identificadorObjeto+" = "+idObjeto+");";
        return sql;
    }

    @Override
    public String sqlAlterar(Object o){
        Usuario user = (Usuario)o;
    	String sql = "update into "+tabela+" ("+nomesCamposBD()+") values ("+user.getNome()+","+user.getLogin()+","+user.getSenha()+","+user.getEmail()+","+user.getGrupoUsuario()+");";
        return null;
    }


    @Override
    public String nomesCamposBD() {
        String nomesCamposBancoDados = "";
        nomesCamposBancoDados=getCamposBancoDados()[0];
        for (int i=1;i<getCamposBancoDados().length;i++){
        nomesCamposBancoDados = nomesCamposBancoDados+", "+getCamposBancoDados()[i];
        }
        nomesCamposBancoDados = nomesCamposBancoDados.substring(0,nomesCamposBancoDados.length());
        int i=nomesCamposBancoDados.length();
        return nomesCamposBancoDados;
    }

    @Override
    public Integer qtdCamposBD() {
        return getCamposBancoDados().length+1;
    }

    @Override
    public ClasseNegocio getIntanciaClasseNegocio() {
        return new Usuario();
    }

    
    /**
     * @return the camposBancoDados
     */
    @Override
    public String[] getCamposBancoDados() {
        return camposBancoDados;
    }
}
